Создав диалоговое окно и попробовав обрабатывать сообщения от клавиатуры
void CTestDialogDlg::OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags)
{
// TODO: Add your message handler code here and/or call default
MessageBeep(-1);
CDialog::OnKeyDown(nChar, nRepCnt, nFlags);
}
Вы тут же убедитесь, что стрелки не обрабатываться. Хотя это возможно. Вам необходимо перегрузить обработку сообщения GetDlgCode.

А в функции обработки вернуть свои настройки.
UINT CTestDialogDlg::OnGetDlgCode()
{
// TODO: Add your message handler code here and/or call default
return DLGC_WANTARROWS|DLGC_WANTALLKEYS|DLGC_WANTCHARS;
}
Одна тонкость. Элементы управления нужно убрать с диалогового окна в данном вариант так в этом случаем стрелки будут менять фокус элементов. Вопрос зачем ? Например для приложений DirectDraw или GDI когда нет необходимости показывать элементы а окно используется как контекст вывода.